Desktop applications are traditionally feature-rich because of available display screen sizes for desktop computers and other hardware capabilities, which encourage developers to provide extensive programming interfaces and to grow to support many use cases and workflows. In many cases, native desktop applications have full access to a user's file system, network-accessible resources, and even the data of other desktop applications. These capabilities have led to several ways in which one application can interact with another application, such as with shared libraries, plug-in systems, etc.
Shared libraries, such as those used by suites of applications, e.g., Microsoft Office suite, enable applications focused on one type of task (e.g., word processing) to have the ability to embed features and content from another application (e.g., spreadsheet), thus seamlessly working as a suite while remaining as independent applications. Plug-in systems integrate external code into another running application, providing complete access to the running process's data and extending functionality. Server management software, such as the VMware vSphere Client for Windows made available by VMware, Inc. of California, provides this type of plug-in functionality, which has enabled both second and third parties to provide advanced functionality by extending the vSphere Client user interface. Additionally, distribution and installation of desktop applications is not limited in any way. Whether read from a disk, downloaded from the Internet, or input from the user, any application code may be executed once it is on a desktop computer.
However, in contrast, applications for mobile devices (i.e., mobile applications) can be limited by the devices on which the mobile applications execute. A smaller screen, compared to desktop computers, means less information can be displayed at once. Less internal storage encourages network connectivity and persisting data within the “cloud” or remote servers. Further, mobile applications tend to run within environments that are much more restrictive than desktop applications. In some cases, mobile applications are distributed through user- or platform-specified channels, which determine whether an application is appropriate for distribution. For example, applications may be downloaded and installed onto a mobile device from an application store (e.g., Android Market, iPhone App Store, Amazon Appstore, various carrier or device manufacturer based application stores, etc.). Some of these channels even require an application review process with humans acting as gatekeepers to ensure quality and acceptability of applications distributed through their platform. Such restrictions provide additional safety and security to users while also imposing different constraints than when producing applications for desktop computers and limiting some functionality.
As such, these restrictions on mobile applications present a challenge when attempting to apply traditional techniques for inter-application communication and operability used for desktop applications to mobile applications.